In a networked system, one or more hosts (e.g., servers) may communicate with one or more destination devices (e.g. clients and/or other servers) over a network. Rules and data formats for communication over the network are typically defined by communication protocols. Examples of such protocols include Ethernet and Internet Protocol Suite (TCP/IP). Typically, network controller(s) in the host (source end-point) and a network controller in each destination device (destination end-point) manage transmission and reception of messages including control and/or data between the host and the destination devices over the network. Communication may be connectionless or may have reliable connectivity (confirmed error-free transmission and in-order delivery).
Reliable Connection (RC) is a transport mode that is configured to provide reliable connectivity between a host and a destination device. In a conventional system, an RC is typically established by allocating a queue pair (QP) on the host. In some protocols, the QP includes a host interface (send queue) and an entity configured to provide reliable service for the QP over the network using a reliability protocol. For example, the InfiniBand standard includes a reliability protocol. In another example, iWARP is configured to use TCP to provide reliability service. Reliable service is configured to provide error-free transfer and in-order delivery of messages between the host and destination.
Reliable service includes functions performed by both the host and destination devices configured to result in error-free transfer and in-order delivery of messages from the host to a destination device. The host is configured to transmit messages in the order that they were posted to the send queue, to identify and retransmit messages and/or packets that were not successfully received by the destination end-point and to complete in-order messages confirmed received by the destination. The destination end-point is configured to validate and process received messages and/or packets, to provide the host an indication about received and processed messages and to deliver received messages and/or packets in-order (delivery order corresponding to the transmission order)
In some situations, it may be desirable for an application running on a host processor to communicate with a plurality of destination devices. In a typical reliable connection configuration, one or more dedicated QPs would be allocated in the host and a reliable connection established for each destination device. A software intermediary may multiplex messages between the plurality of reliable connections (and associated destination devices). Such multiplexing by software can significantly increase communication processing overhead.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art.